/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;
import java.util.*;
import persistencia.PersistenciaArticulo;
import persistencia.PersistenciaCliente;
import persistencia.PersistenciaCompra;
import persistencia.PersistenciaFactura;
/**
 * Clase controladora entre la vista, la logica de negocio y la persistencia de la compra
 * @author JAVA
 */
public class GestionCompra {
    /**
     * Añade articulos a la lista de articulos de la compra
     * @param codigo del articulo que se quiere añadir a la lista de articulos que se avn a comprar
     * Preselecciona el articulo de la BBDD para que no pueda ser escogido por otro cliente al mismo tiempo
     * @param compra 
     */
    public static void añadirArticulo(int codarticulo, Compra compra){
        //Busqueda en la BBDD el codigo del articulo y que nos devuelva el objeto articulo 
        Articulo a=PersistenciaArticulo.obtenerArticulo(codarticulo);
        PersistenciaArticulo.preseleccionarArticulo(a);
        compra.addArticulo(a);
    }
    /**
     * Borra un articulo de la lista de articulos asociada a la compra
     * @param codigo del articulo a borrar de la lista
     * @param objeto compra asociada a la compra
     */
    public static void borrarArticulo(int codarticulo,Compra compra){
        Articulo a=PersistenciaArticulo.obtenerArticulo(codarticulo);
        PersistenciaArticulo.deseleccionaArticulo(a);
        if(compra.removeArticulo(a)){
            System.out.println("Articulo borrado correctamente");
        }else{
            System.out.println("Articulo NO borrado");
        }  
    }
    /**
     * Si se quiere deshacer la compra porque no interesa hay que deseleccionar el articulo a traves de la persistencia
     * @param objeto compra asociado a la compra
     */
    public static void deshacerCompra(Compra compra){
        ArrayList <Articulo> listaArticulos= compra.getListaArticulos();
        Iterator it=listaArticulos.iterator();
            while(it.hasNext()){
                Articulo a=(Articulo)it.next();
                PersistenciaArticulo.deseleccionaArticulo(a);
            }

    }
    /**
     * Muestra la lista de articulos asociada a la compra
     * @param objeto compra asociado a la compra
     */
    public static void verLista(Compra compra){
        List<Articulo> lista=compra.getListaArticulos();
        Iterator it=lista.iterator();
        while(it.hasNext()){
            Articulo a=(Articulo)it.next();
            System.out.println(a.toString());
        }
        
    }
    /**
     * Si el empleado confirma la compra se crea una factura de compra
     * Se verifica si el cliente existe en la BBDD o no y vemos si es vip
     * Imprimimos la factura y la insertamos a traves de la persistencia
     * @param dependiente que realiza la compra
     * @param objeto compra asociado a la compra
     */
    public static void confirmacion(Empleado dependiente,Compra compra){
        String tipo = "Compra";
        FacturaCompra factura = new FacturaCompra(compra.getNombre(),compra.getNif(),dependiente,new Date(),compra);
        Cliente c=null;
        ArrayList<Cliente> listaCliente=new ArrayList<Cliente>();
        listaCliente=PersistenciaCliente.seleccionaCliente(3,compra.getNif());
        
        Iterator it=listaCliente.iterator();

        
            while(it.hasNext()){
               c=(Cliente)it.next();
            }
            
            
        if (c!=null && c.isVip()){
            
            factura.imprimirFacturaVip();
            
                if(PersistenciaCompra.insertarCompra(compra)==1){
                    System.out.println("Compra insertada correctamente");
                }else{
                    System.out.println("Compra NO insertado");
                }
            PersistenciaFactura.insertarFacturaCompra(tipo, factura);

            
        }
        else{

           factura.imprimirFactura(); 
           
                if(PersistenciaCompra.insertarCompra(compra)==1){
                    System.out.println("Compra insertada correctamente");
                }else{
                    System.out.println("Compra NO insertado");
                }
            PersistenciaFactura.insertarFacturaCompra(tipo, factura);             

        }
        
    }

}
